package 位运算;

/**
 * @author ycc
 * @date 2024/7/11
 * 补码：正数的数值部分是数值本身，符号为0；负数的数值部分是在正数表示的基础上对各个位取反后加1，符号位为1.
 */
public class ComplementCode {
    public static void main(String[] args) {
        int number = -35; // 示例负数
        int complementCode = getComplementCode(number);
        System.out.println("补码: " + Integer.toBinaryString(complementCode));
        System.out.println("补码: " + Integer.toBinaryString(number));

        int number2 = 35; // 示例正数
        System.out.println("补码：" + Integer.toBinaryString(number2));
    }

    public static int getComplementCode(int number) {
        return number < 0 ? complement(number) : number;
    }

    public static int complement(int number) {
        return ~Math.abs(number) + 1;
    }
}
